" 设置字符编码
set fileencoding=utf-8
set fileencodings=utf-8,gb2312,gb18030,latin1
set termencoding=utf-8
set encoding=utf-8

" 语法高亮
syntax on
" 深色背景
"color evening
" 检测文件类型
filetype on
" 根据文件类型加载对应的插件
filetype plugin on

" 显示行号
set number
" 高亮显示当前行
set cursorline

" 设置backspace可删除
set backspace=2

" 设置各种缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set smartindent
set cindent
" tab转换为空格
set expandtab
" 显示光标位置
set ruler
" 设置魔术
set magic


" 将ESC键映射为两次j键
inoremap jj <Esc>

" 自动完成大括号
inoremap { {<CR>}<ESC>O

autocmd InsertEnter *.sh exec ":call SetIN()" 
func SetIN()
if &filetype == 'sh'
    inoremap { {}<ESC>i
endif
endfunc

" 自动完成中括号
inoremap [ []<ESC>i
" 自动完成圆括号 ，不知道为什么这行不管用
inoremap ( ()<ESC>i
" 自动完成尖括号
inoremap < <><ESC>i
" 自动完成单引号
inoremap ' ''<ESC>i
" 自动完成双引号 
inoremap " ""<ESC>i

" 取消自动注释 自动回车
" set paste!

"解决VIM下set past ＆ set nopaste困扰
"RHEL6.3 下要在终端窗口执行：编辑键盘快捷键取消“启用菜单快捷键（默认是F10）”
map <F9> :set paste<CR>
map <F10> :set nopaste<CR>
imap <F10> <nop>
set pastetoggle=<F10>

"鼠标可以选中 Vim 单个窗口且不包含行号的文本
set mouse=a

"普通模式下按 p 即可把系统缓冲区中的内容粘帖到 Vim 中，
"就像粘帖用 yy 命令得到的内容一样，并且格式不错乱。
set clipboard=unnamed

"如果把上面的一行换成如下内容,普通模式下按 p 粘帖的内容就是系统剪切板里的内容了
set clipboard=unnamedplus


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件，自动插入文件头 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
""定义函数SetTitle，自动插入文件头 
func SetTitle() 
	"如果文件类型为.sh文件 
	if &filetype == 'sh'
        "inoremap { {}<ESC>i
		call setline(1, "##########################################################################") 
		call append(line("."), "# File Name: ".expand("%")) 
		call append(line(".")+1, "# Author: anhao") 
		call append(line(".")+2, "# mail: wzzlyzdn@qq.com") 
		call append(line(".")+3, "# Created Time: ".strftime("%c")) 
		call append(line(".")+4, "#########################################################################") 
		call append(line(".")+5, "#!/bin/zsh")
		call append(line(".")+6, "PATH=/home/edison/bin:/home/edison/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin")
		call append(line(".")+7, "export PATH")
		call append(line(".")+8, "")
	else 
		call setline(1, "/*************************************************************************") 
		call append(line("."), "	> File Name: ".expand("%")) 
		call append(line(".")+1, "	> Author: anhao") 
		call append(line(".")+2, "	> Mail: wzzlyzdn@qq.com ") 
		call append(line(".")+3, "	> Created Time: ".strftime("%c")) 
		call append(line(".")+4, " ************************************************************************/") 
		call append(line(".")+5, "")
	endif
	if &filetype == 'cpp'
		call append(line(".")+6, "#include<iostream>")
    	call append(line(".")+7, "using namespace std;")
		call append(line(".")+8, "")
	endif
	if &filetype == 'c'
		call append(line(".")+6, "#include<stdio.h>")
		call append(line(".")+7, "")
	endif
	"	if &filetype == 'java'
	"		call append(line(".")+6,"public class ".expand("%"))
	"		call append(line(".")+7,"")
	"	endif
	"新建文件后，自动定位到文件末尾
	autocmd BufNewFile * normal G
endfunc


let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1                  " 语法关键字补全

"自动保存
set autowrite
"代码补全 
""set completeopt=preview,menu

autocmd BufWritePost *.sh exec ":call SetCHMOD()" 
func SetCHMOD()
    silent !chmod +x <afile>
endfunc
